perm filename OO3.FAI[CMS,LCS] blob sn#448597 filedate 1975-10-29 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00011 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002		TITLE OO
C00004 00003	RST:	RESET
C00005 00004	INTY:	HRRZI N,MEM+1
C00006 00005	EVAL:	HRRZI MA,1
C00010 00006	BACK:	HRRZI 6,-2(CX)
C00013 00007	GETO:	SKIPN OU	??
C00015 00008	INTRU:	MOVE EN,JOBCNI
C00019 00009	SAVIT:	HRRZM 6,FIXFLG
C00021 00010	OUTINT:	HRRZI 6,.+3
C00023 00011	TABL:	REPEAT 7,{JFCL↔}
C00025 ENDMK
C⊗;
	TITLE OO
	EXTERNAL JOBAPR,JOBTPC,JOBCNI,JOBFF,JOBREL,JOBDDT,$I
	A←1 ↔ B←2 ↔ FL←4 ↔ EN←7 ↔ TS←10 ↔ OU←11
	CX←13 ↔ MA←14 ↔ N←15 ↔ P←17 ↔ MEM←20000

INT:	HRRZI EN,INTRU
	HRRZM EN,JOBAPR

FILIN:	HRRZI EN,MEM+200
	CORE EN,
	HALT
	OPEN DEVN
	JRST ERRO
	MOVE 6,PPN
	MOVEM 6,IFNAM+3
	LOOKUP IFNAM
	JRST ERRO
	MOVE EN,INPO
	SETZ TS,
	INPUT EN
	HRRZ EN,MEM
	HRRZI N,MEM(EN)
	HRRM N,INTY
	SOS INTY
	CORE N,
	JRST ERRO
	SUBI EN,200
	JUMPLE EN,RST
	IORI EN,177
	MOVNS EN
	HRLZI EN,-1(EN)
	HRRI EN,MEM+177
	INPUT EN
	JRST RST

ERRO:	OUTSTR QMARK
	JRST RST

FILO:	MOVE 6,TMP
	TLNN 6,-1
	SUBI 6,MEM
	MOVEM 6,(N)
	AOJ N,
	SUBI N,MEM
	HRRZM N,MEM
	IORI N,177
	MOVNS N
	HRLZI N,-1(N)
	HRRI N,MEM-1
	OPEN DEVN
	JRST ERRO
	SETZM OFNAM+3
	ENTER OFNAM
	JRST ERRO
	SETZ 16,
	OUTPUT N
	RELEAS
RST:	RESET
	SETZM PTNUM
	MOVE P,PDPO
	MOVE EN,IPC
	INTENB EN,
	OUTSTR CRLF

	HRRZ N,INTY
	MOVE OU,(N)
	MOVEM OU,TMP
	TLNN OU,777777
	SKIPA OU,MEM(OU)
	ADD OU,ONEB
	HRRZI TS,(N)
	PUSHJ P,GETO

LOOP:	PUSHJ P,INTY
	PUSHJ P,EVAL
	PUSHJ P,GETO
	JRST LOOP
INTY:	HRRZI N,MEM+1
	HRRZI TS,(N)
	SKIPN PTOFL
	OUTSTR ASTR
	IWAIT
	INCHRS EN
	JRST .-2
INLIN:	HRRZM EN,(TS)
	SETZM 1(TS)
	ADDI TS,2
	INCHRS EN
	CAIA
	JRST INLIN
	SKIPL OU,LITFLG
	JRST (OU)
	POPJ P,

LITCK:	CAME EN,LITCHR
	JRST INTY+4
	SETOM LITFLG
	POPJ P,

STLIT:	SKIPL FIXFLG
	POPJ P,
	IWAIT
	INCHRS LITCHR
	JRST .-2
	SUBI TS,2
	HRRZI 6,LITCK
	HRRZM 6,LITFLG
	HRRZI 6,POPS
	HRRZM 6,FIXFLG
	SUB P,TWOB
	PUSH P,RETRN
	JRST INTY+4

EXCT:	HLRZ 6,6
	XCT TABL(6)
	JRST CKEX1+2
EVAL:	HRRZI MA,1
	HRRZI CX,(N)
	JRST BGIN
MVM:	HRLI OU,400000(MA)
	HRRZI 6,2
	JRST LMVM
LAEQ:	HRRZI 6,2
	CAIE OU,(MA)
	ADDI 6,2
	SUBI 5,2
	HLL OU,(5)
LMVM:	MOVEM OU,(5)
	SETZM 1(5)
	ADDI 5,2
	SUBI TS,(6)
	ADDI 6,(5)
	HRLZI 6,(6)
	HRRI 6,(5)
	BLT 6,(TS)
	JRST LKMO
FDEQ:	MOVE 4,MEM(MA)
	HRRZI 5,(N)
LKMO:	CAMN 4,(5)
	JRST EQU
ADIN:	ADDI 5,2
	CAIGE 5,(TS)
	JRST LKMO
	ADDI MA,2
BGIN:	CAIGE MA,-MEM(N)
	JRST FDEQ
	HRRZI MA,-MEM(CX)
	ADDI N,2
	CAIGE N,(TS)
	JRST FDEQ
	JRST BACK
EQU:	HRRZI OU,(MA)
	CAILE TS,2(5)
	CAIG N,MEM+2(MA)
	JRST CKLA
	MOVE 6,MEM+2(MA)
	CAMN 6,2(5)
	HRRI OU,2(MA)
CKLA:	CAIL 5,2(N)
	SKIPL 6,-2(5)
	JRST .+3
	CAIN MA,2(6)
	JRST LAEQ
	CAIE OU,(MA)
	JRST MVM
	SKIPL 1(5)
	SKIPN 6,MEM+1(OU)
	JRST ADIN
CKEX1:	TRNN 6,777777
	JRST EXCT
	HRLI OU,400001(OU)
	AOJ OU,
	MOVEM OU,1(5)
DOUT:	CAIGE CX,-2(TS)
	JRST ADIN
BACK:	HRRZI 6,-2(CX)
	ADDI 6,2
	SKIPGE 1(6)
	JRST NEGA+1
	SKIPGE OU,(6)
	AOBJN OU,NEGA
	HRRZI OU,-MEM(6)
	HRLI OU,400000(OU)
NEGA:	MOVEM OU,1(6)
	CAIGE 6,-2(TS)
	JRST BACK+1
	CAIE TS,2(CX)
	JRST NOT1
	SUBI TS,2
	MOVE EN,(TS)
	SUB OU,ONEB
	CAME OU,EN
	CAIN CX,MEM(OU)
	AOBJN OU,NEW1
	SKIPL FL,FIXFLG
	AOBJN OU,FIXIT
	HRRZI EN,MEM+1(OU)
	ADD OU,ONEB
CKSAV:	SKIPN SAVFLG
	POPJ P,
	HRRM TS,INTY
	MOVEM EN,TMP
	POPJ P,
NEW1:	SKIPGE FL,FIXFLG
	JRST CKSAV
	HRRZI OU,-MEM+1(CX)
	HRLI OU,400000(OU)
	JRST ADTS
NOT1:	HRRZI EN,-MEM-2(TS)
	HRLI EN,400000-MEM(CX)
	MOVE OU,EN
	ADD OU,ONEB
	SKIPGE FL,FIXFLG
	JRST CKSAV
	MOVEM EN,(TS)
	MOVEM OU,1(TS)
	HRRZI OU,-MEM+1(TS)
	HRLI OU,400000(OU)
ADTS:	ADDI TS,2
FIXIT:	SKIPL EN,TMP
	JRST CKFLS
	MOVEM EN,(TS)
	HRRZI EN,1(TS)
	ADDI TS,2
CKFLS:	PUSHJ P,(FL)
	SETOM FIXFLG
	JRST CKSAV
GETO:	SKIPN OU	;??
	POPJ P,
	SKIPL PTOFL
	OUTSTR SPACE
	TLZN OU,400000
	TRNN OU,400000
	JRST GOUT
	MOVE EN,OU
	HRRZI 4,777775
	JRST MKOUT
PUDO:	HRLI OU,(4)
	PUSH TS,OU
	MOVE OU,EN
GOUT:	HLRZ 4,OU
MOR:	MOVE EN,MEM(4)
	TLZE EN,400000
	JRST PUDO
	TRNE EN,400000
	JRST MKOUT
	TLNE EN,777777
	JRST DOIT
	SKIPE PTOFL
	JRST PTOUT
	OUTCHR EN
ADO:	ADDI 4,2
	CAIG 4,(OU)
	JRST MOR
	TLNN TS,777777
	JRST TYOUT
	POP TS,OU
	HLRZ 4,OU
	JRST ADO

DOIT:	HLRZS EN
	XCT TABL(EN)
	JRST ADO

PTOUT:	MOVE 6,PTNUM
	PTWR1W 6
	JRST ADO

MKOUT:	HLRZ 6,EN
	HRLI EN,(EN)
	TRZ EN,400000
	MOVEM EN,MEM(6)
	JRST ADO

TYOUT:	SKIPGE PTOFL
	JRST PTOCR
	OUTSTR CRLF
	POPJ P,

PTOCR:	TLNE EN,777777
	POPJ P,
	HRRZI 6,CRLFP
	JRST POST
→∪≥)I*t∪≠=-
A8Y∃∨¬
≥∩~∀%)→≥
↓≤Xd@```~(∪	∪'5∪&~∀%∪≠'↔
_@bY∃≤~∀∪5∨-
A=*Y∃∨	)!ε~(∪)%≥∀A≤XH````4∀∪∃%M(Aπ∨I+ ~∀%⊃%%5$@jXQ=*R~∀%πβ∪
jX\V\~∀∪≠=-~A=*Y∪!Vb~∀%+/β∪P~∀∪	∃¬%β,~∀∪⊃I%4@b1!)≥+4~∃!∨1≡t∪!Q∨π≥(b~∀∪M↔∪!∞d~∀∪%≥)∃8A∪!ε4∀∪⊃%I5∩@d1!)≥+4Vd~∀%!)%	L@b~∀%∨+)'Q$@Pd$~∀∪∃I'(A!=→≡~∃
∨%+ h∪'∨∀↓∨*X~(∪≠∨-∃~A∨*1∪!εVD~∀∪+]β∪(~(∪	¬Iβ⊗~(∪⊃%%h@bY∃=¬%_4∀∪β∨(@bX~(∪π∨%∀@bX~(∪∃%'PA)β¬0Vnn~(∪∪≥))≤A∪Aε~∀~)!)¬≤t∪'↔%!≤A!Q≥+~~(∪!)3≥(A!Q≥+~~(∪!∨!(A X~(∪⊃%→i∩@lXP~∀∪!Q∂)_↓!)≥+4~∀∪∨I~@lYA)≥+~,b~∀∪A)')0A!)≥U~~∀∪!%%5∩lXj~(∪⊃%%i~@lYA)≥+~,b~∀∪A)∃∨¬`A!)≥U~~∀∪A∨!∀A@X~∃'∃)∨≤t%')∨4A!)∨→_~∀∪=+)')HAπ%→→λ~∀∪A∨!∀A@X~∃!Q≥λt%'↔∪!8A!)≥U~~∀∪A∨!∀A@X~∀∪A)3%0A!)≥U~~∀∪M)5~↓!)≥+4~∃!)=
t∪M)5~↓!)∨
0~∀∪∨U)')$↓π%→4∀∪!∨A∀A X4∃!)∨8t∪'↔%!
A!Q≥+~~(∪∃%'PA')=≤~∀∪A∨!∀A@X~∃!Qπβ→_h∪'↔∪A≤A!)9+~~∀%!∨!∀↓ X~∀%⊃%%5$@lYπ¬→→ε~)!∨'(h∪⊃%%i~@lYA)≥+~,b~∀∪A)/%&dA!)≥U~~∀∪A∨!∀A@X~∀→'β-%(t∪⊃I%5~@XY
∪1→→∞~∀%∨+)'Q$Aπ%1~∃
%1)&t%'+¬∩↓)&Xd4∀∪≠∨Y
A∨*0ZbQ)LR~∀∪M+∧A 1∨≥∧4∀∪∃%M(A	∨U(~∀~)π%
∪`t∪πβ%∂
@j0ZdQ)LR~∀∪A∨!∀A@X~∀∪)%'(A→∪1)&4∃∪≥	∃$t∪⊃I%5∩@XX\Vd4∀∪∃%M(A'βY∪(~∀%≠∨-4A∨*X!≤R~(∪!∨!(A X~)→∪)αh∪⊃%%i∩@lX8Vd~∀%∃%'(↓'β-∪P~∀∪'U∧A∨*1∨≥∧4∀∪≠∨Y~A∨TXQ≤$~∀∪!=!∀A 0~∃%!1βπ
t%⊃%%5$@lX\,d~∀∪)%'(AMβ-∪(4∀∪⊃%HA∨*Y5~Q∨TR~∀∪Q→4A∨TXh``@``~∀%)%≡A=*Xh`@```~(∪≠∨-∃~A∨*0Q≤R4∀∪!∨A∀A X4∃β	Ht∪⊃%I5∩@l0\Vd~(∪∃%'PA'β-%(~∀∪5∨-
@PY≠~4bQ∨*$~∀∪≠=-~@PXdQ)LR~∀∪
β∪
AQ&XbQ=*R~∀%∃%'(↓∨→λb4∀∪'+	∩A)&0d~∀∪5∨-
A=*XQ∨TR~∃∨1λbt∪5∨-~↓∨*Xf!)&R~(∪≠∨-∀@hXZDQ≤R4∀∪≠∨Y~@h0Q)&R4∀∪≠∨Y
@jX!≤R~(∪)%≥∀@jXZD~∀∪)I≥
@j0h```@`~∀∪)%'(AA∨∪(~)!∨∪λh∪≠∨-∃~@jXDQ)&R4∀∪⊃%I5∩A∨TX[≠4VdQ)LR~∀∪!%→∩A=*Xh`@```[5~Q)LR~∀∪5∨-~↓∨*Xh!)&R~(∪β∨¬) A∨*0~∀∪≠=-~A=*XjQQ&R~∀%⊃%%5$A∨*X5≠~VTQ)&R4∀∪⊃%1∩A∨*0h```@`Q∨*$~∀∪≠=-~A=*XQ8R~∀∪¬		∩AQ&Xl~(∪!∨!(A X~)!∨∪(h∪⊃%%i∩@jX!≤R~(∪⊃%→$@jXh@````!≤R~(∪∃%'PA!∨∪⊂~∀~∃9	∪%(h∪⊃%%i∩@lX8Vd~∀%∃%'(↓'β-∪P~∀∪≠=-
A∨TY≠~!∨*R~(∪≠∨-∃~A∨*0Q≤R4∀∪!∨A∀A X4∀↓*n]mOUTINT:	HRRZI 6,.+3
	HRRZM 6,FIXFLG
	POPJ P,
	HRRZI B,7	
	JUMPE OUTZ
	IDIVI =10
	ADDI A,60
	HRRZM A,BLK(B)
	SOJGE B,OUTINT+4
OCHR:	OUTCHR BLK+1(B)
	CAIGE B,6
	AOJA B,OCHR
	POPJ P,
OUTZ:	CAIL B,7
	HRLZI B,300000
	JRST OCHR

BLK:	BLOCK 20

GLSTV:	PUSHJ P,GLSTA
	MOVE VAL(A)
	POPJ P,
	
GNXTV:	PUSHJ P,GNXTA
	MOVE VAL(A)
	POPJ P,

GLSTA:	SKIPGE A,-1(5)
	SKIPL A,MEM(A)
	CAIA
	JRST .-2
	SKIPN A
	SKIPL A,-2(5)
	POPJ P,
	JRST GLSTV+1

GNXTA:	SKIPN A,3(5)
	SKIPG A,2(5)
	SKIPL A
	POPJ P,
	HLRZ A,A
	MOVE A,MEM+400000(A)
	JRST GNXTA+2

ADIT:	PUSHJ P,GLSTV
	PUSHJ P,GNXTA
	ADD VAL(A)
	POPJ P,
SUBIT:	PUSHJ P,GLSTV
	PUSHJ P,GNXTA
	SUB VAL(A)
	POPJ P,

VAL:	BLOCK 101 ↔ 2 ↔ 2 ↔ BLOCK 76
TABL:	REPEAT 7,{JFCL↔}
	JRST RST
	PUSHJ P,GLSTA
	PUSHJ P,GNXTA
	PUSHJ P,GLSTV
	PUSHJ P,GNXTV
	PUSHJ P,OUTINT
	PUSHJ P,CRFIX
	REPEAT 24,{JFCL↔}
	PUSHJ P,STLIT
	REPEAT 10,{JFCL↔}
	PUSHJ P,ADIT
	PUSHJ P,PTOFF
	PUSHJ P,SUBIT
	PUSHJ P,PTON
	REPEAT 13,{JFCL↔}
	PUSHJ P,INDER
	REPEAT 4,{JFCL↔}
	JSR $I
	PUSHJ P,NDIRT
	PUSHJ P,ADER
	JFCL
	PUSHJ P,PTCALL
	REPEAT 2,{JFCL↔}
	PUSHJ P,FILIN
	REPEAT 4,{JFCL↔}
	PUSHJ P,PTEND
	PUSHJ P,LITA
	JFCL
	SETZM SAVFLG
	PUSHJ P,FILO
	PUSHJ P,PTBEG
	JFCL
	PUSHJ P,RPLACE
	SETOM SAVFLG
	REPEAT 53,{JFCL↔}
POPS:	POPJ P,	↔ PDPO:	IOWD 100,PDL
PDL:	BLOCK 100    ↔	PTOFL:	0
IPC:	21000,,20000 ↔	0 ↔	PPN: 	'CMSLCS'
DEVN:	17	     ↔	SIXBIT/DSK/ ↔	0
IFNAM:	SIXBIT/ALY/  ↔	SIXBIT/OOP/ ↔	BLOCK 2
OFNAM:	SIXBIT/LAST/  ↔	SIXBIT/OOP/ ↔	BLOCK 2
INPO:	IOWD 200,MEM ↔	QMARK:	45767706424
CRLF:	64240,,0     ↔	ASTR:	ASCIZ/*/
SPACE:	ASCIZ/ /     ↔	CALLC:	600600,,0
CRLFP:	015012,,     ↔	FIXFLG:	-1
CRLFD:	64245,,600000
TMP:	0    ↔	SAVFLG:	-1
LITFLG:	-1   ↔	LITCHR:	LITCK
ONEB:	1,,1 ↔	TWOB:	2,,2
RETRN:	LOOP+1 ↔ PATCH:	BLOCK 100
PTNUM:	0    ↔	BLOCK 400
	END INT